home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / ewl / ewl_iconbox.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  5KB  |  153 lines

  1. #ifndef __EWL_ICONBOX_H__
  2. #define __EWL_ICONBOX_H__
  3.  
  4. #define EWL_ICONBOX_ICON_PADDING 15
  5. #define EWL_ICONBOX_MOVE_TOLERANCE 5
  6. #define EWL_ICONBOX_MINIMUM_SIZE 50
  7. #define LABEL_CHARS 10
  8.  
  9. #include <sys/time.h>
  10. #include <time.h>
  11.  
  12. /**
  13.  * @file ewl_iconbox.h
  14.  * @defgroup Ewl_Iconbox Iconbox: The Icon Box Layout Container
  15.  * @brief Defines the Ewl_Iconbox class, used to display a collection of icons 
  16.  *        with annotations and support arranging/manipulating contained icons
  17.  *
  18.  */
  19.  
  20. /** 
  21.  * @themekey /iconbox/file
  22.  * @themekey /iconbox/group
  23.  */
  24.  
  25. typedef struct Ewl_Iconbox Ewl_Iconbox;
  26.  
  27. typedef struct Ewl_Iconbox_Icon Ewl_Iconbox_Icon;
  28. struct Ewl_Iconbox_Icon
  29. {
  30.     Ewl_Box box;
  31.     
  32.     Ewl_Widget *image;
  33.     Ewl_Widget *w_label;
  34.  
  35.     int drag;
  36.     int selected ;
  37.  
  38.     Ewl_Iconbox *icon_box_parent; /* Our reference upwards, kinda breaks OO conventions */
  39.     char *label;              /*Our icon's full (unabbreviated) label) */
  40.     char *label_compressed;
  41. };
  42.  
  43. /**
  44.  * @def EWL_ICONBOX(iconbox)
  45.  * Typecast a pointer to an Ewl_Iconbox pointer
  46.  */
  47. #define EWL_ICONBOX(iconbox) ((Ewl_Iconbox *) iconbox)
  48. #define EWL_ICONBOX_ICON(icon) ((Ewl_Iconbox_Icon *) icon)
  49.  
  50. /** 
  51.  * @struct Ewl_Iconbox
  52.  * Inherits from an Ewl_Container to provide layout facilities for child widgets placed inside
  53.  * Layout is either free-form, or auto-arranged to a grid.
  54.  */
  55. struct Ewl_Iconbox
  56. {
  57.     Ewl_Box    box; /**< Inherit from Ewl_Container */
  58.  
  59.     Ewl_Widget *ewl_iconbox_scrollpane;
  60.     Ewl_Widget *ewl_iconbox_pane_inner;
  61.  
  62.     Ewl_Widget *ewl_iconbox_context_menu;
  63.     Ewl_Widget *ewl_iconbox_context_menu_item;
  64.     Ewl_Widget *ewl_iconbox_menu_floater;
  65.     Ewl_Widget *ewl_iconbox_menu_box;
  66.     Ewl_Widget *ewl_iconbox_view_menu;
  67.  
  68.     Ewl_Widget *icon_menu_floater;
  69.     Ewl_Widget *icon_menu_item;
  70.     Ewl_Widget *icon_menu;
  71.  
  72.  
  73.     Ecore_List *ewl_iconbox_icon_list;  /* The icon list */
  74.     char *test;
  75.  
  76.     Ewl_Iconbox_Icon *drag_icon;
  77.     Ewl_Iconbox_Icon *edit_icon;
  78.     Ewl_Iconbox_Icon *select_icon;
  79.  
  80.     int xdown, ydown;           /* Last icon button down x/y, for edge resistence */
  81.     int dx, dy;               /* Drag start x/y */
  82.     int lx, ly;               /* Layout x, layout y */
  83.     int ox, oy;               /* Layout x offset, layout y offset */
  84.     int iw, ih;               /* Custom icon width/height*/
  85.  
  86.     /*Background*/
  87.     Ewl_Widget *background;
  88.  
  89.     /* Objects for label editing..*/
  90.     Ewl_Widget *entry;
  91.     Ewl_Widget *entry_floater;
  92.     Ewl_Widget *entry_box;
  93.  
  94.     /* Objects for selection */
  95.     Ewl_Widget *select;
  96.     Ewl_Widget *select_floater;
  97.     int drag_box;              /* Are we dragging? */
  98.  
  99.     /* Key event/repeat timer */
  100.     struct timeval lasttime;
  101.     void (*key_event_cb)(Ewl_Iconbox *ib, void *data, char *keyname);
  102.     void *key_event_data;
  103.  
  104.     /* Editable flag */
  105.     int editable;
  106. };
  107.  
  108.  
  109. Ewl_Widget    *ewl_iconbox_new(void);
  110. Ewl_Widget    *ewl_iconbox_icon_new(void);
  111. int         ewl_iconbox_init(Ewl_Iconbox *iconbox);
  112. int         ewl_iconbox_icon_init(Ewl_Iconbox_Icon *icon);
  113.  
  114.  
  115. /* External functions */
  116. void          ewl_iconbox_icon_size_custom_set(Ewl_Iconbox *ib, int w, int h);
  117. void          ewl_iconbox_editable_set(Ewl_Iconbox *ib, int edit);
  118. void          ewl_iconbox_icon_arrange(Ewl_Iconbox *ib);
  119. void          ewl_iconbox_deselect_all(Ewl_Iconbox *ib);
  120. Ewl_Iconbox_Icon*ewl_iconbox_icon_add(Ewl_Iconbox *iconbox, const char *name, 
  121.                                 const char *icon_file);
  122. void          ewl_iconbox_scrollpane_goto_root(Ewl_Iconbox *ib);
  123. void          ewl_iconbox_clear(Ewl_Iconbox *iconbox);
  124. void          ewl_iconbox_icon_image_set(Ewl_Iconbox_Icon *icon, const char *filename);
  125. void          ewl_iconbox_background_set(Ewl_Iconbox *ib, const char *file);
  126. void          ewl_iconbox_context_menu_item_add(Ewl_Iconbox *ib, Ewl_Widget *item);
  127. void          ewl_iconbox_icon_menu_item_add(Ewl_Iconbox *ib, Ewl_Widget *item);
  128. void          ewl_iconbox_icon_remove(Ewl_Iconbox *ib, Ewl_Iconbox_Icon *icon);
  129. void           ewl_iconbox_scrollpane_recalculate(Ewl_Iconbox *ib);
  130. void          ewl_iconbox_controlled_key_callback_register(Ewl_Iconbox *ib, 
  131.                     void (*cb)(Ewl_Iconbox *, void *, char *), 
  132.                     void *data);
  133. Ecore_List    *ewl_iconbox_get_selection(Ewl_Iconbox *ib);
  134.  
  135. /* Internal callbacks */
  136. void ewl_iconbox_dnd_drop_cb(Ewl_Widget *item, void *ev_data, void *user_data);
  137. void ewl_iconbox_dnd_position_cb(Ewl_Widget *item, void *ev_data, void *user_data);
  138. void ewl_iconbox_arrange_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  139. void ewl_iconbox_expansion_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  140. void ewl_iconbox_mouse_move_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  141. void ewl_iconbox_pane_mouse_down_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  142. void ewl_iconbox_mouse_up(Ewl_Widget *w, void *ev_data, void *user_data);
  143. void ewl_iconbox_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  144. void ewl_iconbox_icon_mouse_up(Ewl_Widget *w, void *ev_data, void *user_data);
  145. void ewl_iconbox_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  146. void ewl_iconbox_icon_mouse_down(Ewl_Widget *w, void *ev_data, void *user_data);
  147. void ewl_iconbox_icon_label_mouse_down_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  148. void ewl_iconbox_icon_destroy_cb(Ewl_Widget *w, void *ev_data ,void *user_data );
  149. void ewl_iconbox_key_press_cb (Ewl_Widget *w, void *ev_data, void *user_data);
  150.  
  151. #endif
  152.  
  153.